How do severe winter storms form, and could they become worse in the future?
Author
Earth & Space Science
HS-ESS2-8Time: 7β13 Days
π¨οΈ Winter Storm Jonas: Anatomy of a Blizzard π¨οΈ
23 Engage: The Investigative Phenomenon
23.1 βοΈ Winter Storm Jonas (January 22β24, 2016)
Winter storm Jonas produced strong enough winds and enough snow to cause significant disruptions to society, damage to property, and harm to human life.
Quick Facts:
π Up to 40 inches of snow in parts of West Virginia
π¨ Wind gusts exceeding 60 mph along the coast
ποΈ New York City received 27.5 inches β near-record snowfall
β‘ Over 300,000 power outages across the Mid-Atlantic
π° Estimated $3 billion in damages
π’ At least 55 deaths attributed to the storm
23.1.1 π€ Driving Questions:
What causes the wind associated with a blizzard?
What causes the snow and precipitation during a storm like this?
Could storms like Jonas become more common or more intense?
23.1.2 π Notice & Wonder
Before we dive into the science, take 3 minutes to write:
What do you notice about Winter Storm Jonas?
What do you wonder about how storms like this form?
Have you personally experienced a storm like this? What was it like?
24 Explore: What Causes Wind?
24.1 π¬ Investigation: Pressure & Wind
Wind isnβt random β it has a cause. In this section, youβll build a model of what creates wind and why it blows in specific directions.
24.2 The Wind Machine: Pressure Differences
Wind is caused by differences in air pressure. Air always moves from areas of high pressure toward areas of low pressure. The greater the pressure difference, the stronger the wind.
But what causes pressure differences? Uneven heating of Earthβs surface.
// Interactive pressure-wind modelviewof surfaceTemp = Inputs.range([250,320], {label:"Surface Temperature (K)",step:5,value:290})
Code
viewof neighborTemp = Inputs.range([250,320], {label:"Neighboring Region Temp (K)",step:5,value:270})
Code
{const width =700;const height =350;const svg = d3.create("svg").attr("width", width).attr("height", height).attr("viewBox",`0 0 ${width}${height}`);// Background svg.append("rect").attr("width", width).attr("height", height).attr("fill","#f0f4ff").attr("rx",10);// Ground svg.append("rect").attr("x",0).attr("y",280).attr("width", width).attr("height",70).attr("fill","#8B7355");// Left region (warmer)const leftColor = d3.interpolateRdBu(1- (surfaceTemp -250) /70); svg.append("rect").attr("x",0).attr("y",280).attr("width",350).attr("height",70).attr("fill", leftColor).attr("opacity",0.7); svg.append("text").attr("x",175).attr("y",310).attr("text-anchor","middle").attr("fill","white").attr("font-weight","bold").text(`${surfaceTemp}K`);// Right region (cooler)const rightColor = d3.interpolateRdBu(1- (neighborTemp -250) /70); svg.append("rect").attr("x",350).attr("y",280).attr("width",350).attr("height",70).attr("fill", rightColor).attr("opacity",0.7); svg.append("text").attr("x",525).attr("y",310).attr("text-anchor","middle").attr("fill","white").attr("font-weight","bold").text(`${neighborTemp}K`);// Pressure calculation (simplified: warmer = lower pressure at surface)const leftPressure =1013- (surfaceTemp -270) *0.5;const rightPressure =1013- (neighborTemp -270) *0.5;const pressureDiff = rightPressure - leftPressure;const windSpeed =Math.abs(pressureDiff) *1.5;// Pressure labels svg.append("text").attr("x",175).attr("y",40).attr("text-anchor","middle").attr("font-size",16).attr("font-weight","bold").text(`P = ${leftPressure.toFixed(0)} mb`); svg.append("text").attr("x",175).attr("y",60).attr("text-anchor","middle").attr("font-size",12).text(leftPressure < rightPressure ?"π΄ LOW PRESSURE":"π΅ HIGH PRESSURE"); svg.append("text").attr("x",525).attr("y",40).attr("text-anchor","middle").attr("font-size",16).attr("font-weight","bold").text(`P = ${rightPressure.toFixed(0)} mb`); svg.append("text").attr("x",525).attr("y",60).attr("text-anchor","middle").attr("font-size",12).text(rightPressure < leftPressure ?"π΄ LOW PRESSURE":"π΅ HIGH PRESSURE");// Rising/sinking airif (surfaceTemp > neighborTemp) {// Warm air rises on leftfor (let i =0; i <4; i++) { svg.append("line").attr("x1",120+ i *35).attr("y1",260).attr("x2",120+ i *35).attr("y2",100).attr("stroke","#e74c3c").attr("stroke-width",2).attr("marker-end","url(#arrowRed)"); } svg.append("text").attr("x",175).attr("y",90).attr("text-anchor","middle").attr("font-size",11).attr("fill","#e74c3c").text("β Warm air RISES");// Cold air sinks on rightfor (let i =0; i <4; i++) { svg.append("line").attr("x1",470+ i *35).attr("y1",100).attr("x2",470+ i *35).attr("y2",260).attr("stroke","#3498db").attr("stroke-width",2).attr("marker-end","url(#arrowBlue)"); } svg.append("text").attr("x",525).attr("y",90).attr("text-anchor","middle").attr("font-size",11).attr("fill","#3498db").text("β Cool air SINKS"); } elseif (neighborTemp > surfaceTemp) {for (let i =0; i <4; i++) { svg.append("line").attr("x1",470+ i *35).attr("y1",260).attr("x2",470+ i *35).attr("y2",100).attr("stroke","#e74c3c").attr("stroke-width",2); } svg.append("text").attr("x",525).attr("y",90).attr("text-anchor","middle").attr("font-size",11).attr("fill","#e74c3c").text("β Warm air RISES");for (let i =0; i <4; i++) { svg.append("line").attr("x1",120+ i *35).attr("y1",100).attr("x2",120+ i *35).attr("y2",260).attr("stroke","#3498db").attr("stroke-width",2); } svg.append("text").attr("x",175).attr("y",90).attr("text-anchor","middle").attr("font-size",11).attr("fill","#3498db").text("β Cool air SINKS"); }// Wind arrow at surfaceif (Math.abs(pressureDiff) >1) {const windDir = pressureDiff >0?1:-1;const arrowX1 = windDir >0?450:250;const arrowX2 = windDir >0?250:450; svg.append("line").attr("x1", arrowX1).attr("y1",270).attr("x2", arrowX2).attr("y2",270).attr("stroke","#2ecc71").attr("stroke-width",Math.min(windSpeed /5,8)); svg.append("text").attr("x",350).attr("y",255).attr("text-anchor","middle").attr("font-size",14).attr("font-weight","bold").attr("fill","#2ecc71").text(`WIND β ${windSpeed.toFixed(0)} km/h (from HIGH to LOW pressure)`); } else { svg.append("text").attr("x",350).attr("y",260).attr("text-anchor","middle").attr("font-size",14).attr("fill","#999").text("No significant wind (pressures nearly equal)"); }// Defs for arrowheadsconst defs = svg.append("defs"); defs.append("marker").attr("id","arrowRed").attr("viewBox","0 0 10 10").attr("refX",5).attr("refY",5).attr("markerWidth",6).attr("markerHeight",6).attr("orient","auto-start-reverse").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("fill","#e74c3c"); defs.append("marker").attr("id","arrowBlue").attr("viewBox","0 0 10 10").attr("refX",5).attr("refY",5).attr("markerWidth",6).attr("markerHeight",6).attr("orient","auto-start-reverse").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("fill","#3498db");return svg.node();}
24.2.1 π‘ Key Concept: What Drives Wind
Uneven heating β Temperature differences β Pressure differences β WIND
When the Sun heats Earthβs surface unevenly, some areas become warmer than others.
Warm air is less dense and rises, creating an area of low pressure at the surface.
Cool air is more dense and sinks, creating an area of high pressure at the surface.
Air flows from high pressure β low pressure. This is wind!
The greater the pressure difference (the pressure gradient), the faster the wind.
24.2.2 π Explore Activity
Use the sliders above to investigate:
Set the left region to 310 K and the right to 270 K. What happens to wind speed?
Now bring them closer together (290 K and 280 K). How does wind speed change?
What temperature combination creates the strongest wind?
In your own words, explain why uneven heating causes wind.
24.3 Air Masses: The Building Blocks of Weather
An air mass is a large body of air (covering thousands of square miles) that has relatively uniform temperature and humidity. Air masses form when air sits over a region long enough to take on that regionβs characteristics.
So mT = maritime Tropical = warm and moist (like air from the Gulf of Mexico), and cP = continental Polar = cool and dry (like air from Canada in winter).
25 Explore: Fronts β When Air Masses Collide
25.1 πͺοΈ What Happens When Air Masses Meet?
When two air masses with different properties meet, they donβt mix easily. The boundary between them is called a front. Fronts are where weather happens!
Use the dropdown above to explore each front type. For each one, answer:
Which air mass is advancing?
What happens to the warm air?
What type of precipitation would you expect (brief and intense, or steady and prolonged)?
Which front type is most associated with blizzards?
26 Explain: How Do Blizzards Form?
26.1 π§ Building a Blizzard Model
Now that you understand wind (from pressure differences) and precipitation (from air mass collisions at fronts), letβs put it all together to explain how blizzards form.
26.2 The Mid-Latitude Cyclone
Blizzards are produced by powerful mid-latitude cyclones β large low-pressure systems that form at the boundary between polar and tropical air masses, typically between 30Β°N and 60Β°N latitude.
Code
viewof cycloneStage = Inputs.range([1,4], {label:"Cyclone Life Stage",step:1,value:1})
Code
{const width =750;const height =450;const svg = d3.create("svg").attr("width", width).attr("height", height).attr("viewBox",`0 0 ${width}${height}`); svg.append("rect").attr("width", width).attr("height", height).attr("fill","#f0f4ff").attr("rx",10);const stages = [ {title:"Stage 1: Stationary Front",desc:"A boundary between cold polar air and warm tropical air sits in place. Winds blow in opposite directions on each side."}, {title:"Stage 2: Wave Development",desc:"A kink develops in the front. Warm air begins to push north while cold air pushes south. A low-pressure center forms at the bend."}, {title:"Stage 3: Mature Cyclone",desc:"The low deepens. Warm front extends northeast, cold front extends southwest. Counter-clockwise rotation brings heavy precip. This is when blizzard conditions occur!"}, {title:"Stage 4: Occlusion & Decay",desc:"The cold front catches the warm front, lifting all warm air off the surface. The storm weakens as energy is cut off."} ];const stage = stages[cycloneStage -1]; svg.append("text").attr("x",375).attr("y",30).attr("text-anchor","middle").attr("font-size",20).attr("font-weight","bold").text(stage.title);const cx =375, cy =230;if (cycloneStage ===1) {// Stationary front svg.append("rect").attr("x",50).attr("y",60).attr("width",650).attr("height",160).attr("fill","#74b9ff").attr("opacity",0.3).attr("rx",8); svg.append("rect").attr("x",50).attr("y",220).attr("width",650).attr("height",160).attr("fill","#ff7675").attr("opacity",0.3).attr("rx",8); svg.append("line").attr("x1",50).attr("y1",220).attr("x2",700).attr("y2",220).attr("stroke","#6c5ce7").attr("stroke-width",4); svg.append("text").attr("x",375).attr("y",150).attr("text-anchor","middle").attr("font-size",22).attr("fill","#0984e3").text("βοΈ Cold Polar Air (cP) β"); svg.append("text").attr("x",375).attr("y",300).attr("text-anchor","middle").attr("font-size",22).attr("fill","#d63031").text("β π₯ Warm Tropical Air (mT)"); } elseif (cycloneStage ===2) { svg.append("rect").attr("x",50).attr("y",60).attr("width",650).attr("height",140).attr("fill","#74b9ff").attr("opacity",0.3).attr("rx",8); svg.append("rect").attr("x",50).attr("y",250).attr("width",650).attr("height",140).attr("fill","#ff7675").attr("opacity",0.3).attr("rx",8); svg.append("path").attr("d","M 100,220 Q 375,140 650,220").attr("stroke","#0984e3").attr("stroke-width",3).attr("fill","none"); svg.append("path").attr("d","M 100,220 Q 375,300 650,220").attr("stroke","#d63031").attr("stroke-width",3).attr("fill","none"); svg.append("circle").attr("cx",375).attr("cy",220).attr("r",20).attr("fill","none").attr("stroke","#e74c3c").attr("stroke-width",3); svg.append("text").attr("x",375).attr("y",225).attr("text-anchor","middle").attr("font-size",16).attr("font-weight","bold").attr("fill","#e74c3c").text("L"); svg.append("text").attr("x",250).attr("y",140).attr("text-anchor","middle").attr("font-size",16).attr("fill","#0984e3").text("βοΈ Cold air pushes south"); svg.append("text").attr("x",500).attr("y",320).attr("text-anchor","middle").attr("font-size",16).attr("fill","#d63031").text("π₯ Warm air pushes north"); } elseif (cycloneStage ===3) {// Mature cyclone with rotation svg.append("circle").attr("cx", cx).attr("cy", cy).attr("r",100).attr("fill","none").attr("stroke","#6c5ce7").attr("stroke-width",2).attr("stroke-dasharray","5,3"); svg.append("circle").attr("cx", cx).attr("cy", cy).attr("r",25).attr("fill","#e74c3c").attr("opacity",0.3); svg.append("text").attr("x", cx).attr("y", cy +7).attr("text-anchor","middle").attr("font-size",22).attr("font-weight","bold").attr("fill","#e74c3c").text("L");// Cold front (trailing SW) svg.append("line").attr("x1", cx).attr("y1", cy).attr("x2", cx -120).attr("y2", cy +100).attr("stroke","#0984e3").attr("stroke-width",4);for (let i =1; i <=4; i++) {const fx = cx - i *30;const fy = cy + i *25; svg.append("polygon").attr("points",`${fx},${fy}${fx-6},${fy+10}${fx+6},${fy+10}`).attr("fill","#0984e3"); }// Warm front (extending NE) svg.append("line").attr("x1", cx).attr("y1", cy).attr("x2", cx +140).attr("y2", cy -50).attr("stroke","#d63031").attr("stroke-width",4);for (let i =1; i <=5; i++) { svg.append("circle").attr("cx", cx + i *28).attr("cy", cy - i *10).attr("r",5).attr("fill","#d63031"); }// CCW rotation arrow svg.append("text").attr("x", cx +110).attr("y", cy +10).attr("font-size",14).attr("fill","#6c5ce7").text("βΊ CCW");// Labels svg.append("text").attr("x", cx -160).attr("y", cy +130).attr("font-size",14).attr("font-weight","bold").attr("fill","#0984e3").text("Cold Front"); svg.append("text").attr("x", cx +130).attr("y", cy -70).attr("font-size",14).attr("font-weight","bold").attr("fill","#d63031").text("Warm Front");// Blizzard zone svg.append("rect").attr("x", cx -170).attr("y", cy -80).attr("width",130).attr("height",50).attr("fill","#dfe6e9").attr("rx",8).attr("stroke","#2d3436"); svg.append("text").attr("x", cx -105).attr("y", cy -55).attr("text-anchor","middle").attr("font-size",13).attr("font-weight","bold").text("π¨οΈ BLIZZARD"); svg.append("text").attr("x", cx -105).attr("y", cy -40).attr("text-anchor","middle").attr("font-size",10).text("ZONE");// Precipitation zones svg.append("text").attr("x", cx +40).attr("y", cy -90).attr("font-size",18).text("π§οΈ"); svg.append("text").attr("x", cx -80).attr("y", cy -30).attr("font-size",22).text("βοΈ"); svg.append("text").attr("x", cx -40).attr("y", cy +80).attr("font-size",18).text("βοΈ"); } else { svg.append("circle").attr("cx", cx).attr("cy", cy).attr("r",80).attr("fill","none").attr("stroke","#b2bec3").attr("stroke-width",2).attr("stroke-dasharray","3,3"); svg.append("text").attr("x", cx).attr("y", cy +7).attr("text-anchor","middle").attr("font-size",22).attr("font-weight","bold").attr("fill","#b2bec3").text("L"); svg.append("line").attr("x1", cx -80).attr("y1", cy +60).attr("x2", cx +100).attr("y2", cy -60).attr("stroke","#6c5ce7").attr("stroke-width",4); svg.append("text").attr("x", cx).attr("y", cy +120).attr("text-anchor","middle").attr("font-size",14).attr("fill","#636e72").text("Occluded front β warm air fully lifted"); svg.append("text").attr("x", cx).attr("y", cy +145).attr("text-anchor","middle").attr("font-size",14).attr("fill","#636e72").text("Storm loses energy source and dissipates"); svg.append("text").attr("x", cx).attr("y", cy -100).attr("text-anchor","middle").attr("font-size",30).text("βοΈ"); }// Description svg.append("foreignObject").attr("x",50).attr("y",380).attr("width",650).attr("height",60).append("xhtml:div").style("font-size","13px").style("text-align","center").style("color","#2d3436").text(stage.desc);return svg.node();}
A blizzard is a severe mid-latitude cyclone that produces:
Heavy snow (reduces visibility to less than ΒΌ mile)
Strong winds (sustained 35+ mph for 3+ hours)
Cold temperatures (usually below 20Β°F)
These conditions occur on the cold side of the low-pressure center (north and west of the center in the Northern Hemisphere), where cold, dry polar air wraps around the system and collides with moist air being lifted along the fronts.
26.3 Reading Weather Maps
Meteorologists use surface analysis maps to track air masses, fronts, and pressure systems. Understanding these maps is key to predicting blizzards.
26.3.1 πΊοΈ Weather Map Symbols
Symbol
Meaning
L (red)
Low-pressure center β rising air, clouds, precipitation
H (blue)
High-pressure center β sinking air, clear skies
Blue line with triangles β²
Cold front (triangles point in direction of movement)
Red line with semicircles β¦Ώ
Warm front (semicircles point in direction of movement)
Alternating blue/red
Stationary front
Purple line with both
Occluded front
Concentric circles
Isobars β lines of equal pressure (closer = stronger wind)
26.3.2 π¬ Lab Activity: Track Winter Storm Jonas
Using the NOAA Weather Prediction Centerβs archived surface analysis maps:
Find surface analysis maps for January 21β24, 2016
For each day, identify:
Location of the low-pressure center
Types of fronts present
Which air masses are interacting
Where precipitation is falling
Create a timeline showing how the storm developed, reached peak intensity, and dissipated
Compare the stormβs lifecycle to the mid-latitude cyclone stages above
27 Explain: Precipitation β Where Does Snow Come From?
27.1 π§ From Water Vapor to Snowflakes
Understanding precipitation requires connecting energy, water, and air movement. Letβs trace the journey from evaporation to snowfall.
27.2 The Precipitation Process
Code
{const width =750;const height =500;const svg = d3.create("svg").attr("width", width).attr("height", height).attr("viewBox",`0 0 ${width}${height}`); svg.append("rect").attr("width", width).attr("height", height).attr("fill","#e8f4fd").attr("rx",10); svg.append("text").attr("x",375).attr("y",30).attr("text-anchor","middle").attr("font-size",20).attr("font-weight","bold").text("How Precipitation Forms at a Front");// Ground svg.append("rect").attr("x",0).attr("y",420).attr("width",375).attr("height",80).attr("fill","#ff7675").attr("opacity",0.3); svg.append("rect").attr("x",375).attr("y",420).attr("width",375).attr("height",80).attr("fill","#74b9ff").attr("opacity",0.3); svg.append("text").attr("x",190).attr("y",460).attr("text-anchor","middle").attr("font-size",14).attr("font-weight","bold").attr("fill","#d63031").text("Warm Surface (mT air)"); svg.append("text").attr("x",560).attr("y",460).attr("text-anchor","middle").attr("font-size",14).attr("font-weight","bold").attr("fill","#0984e3").text("Cold Surface (cP air)");// Steps with arrowsconst steps = [ {x:120,y:390,num:"β ",text:"Warm, moist air holds\nlots of water vapor",color:"#d63031"}, {x:120,y:300,num:"β‘",text:"Warm air is forced UP\nat the front boundary",color:"#e17055"}, {x:280,y:200,num:"β’",text:"Rising air COOLS\n(adiabatic cooling)",color:"#6c5ce7"}, {x:430,y:120,num:"β£",text:"Cool air can't hold as\nmuch moisture β CONDENSATION",color:"#0984e3"}, {x:550,y:60,num:"β€",text:"Water droplets form clouds;\nif cold enough β ICE CRYSTALS",color:"#00b894"}, {x:550,y:300,num:"β₯",text:"Crystals grow heavy\nand FALL as snow βοΈ",color:"#2d3436"} ]; steps.forEach(s => { svg.append("circle").attr("cx", s.x-30).attr("cy", s.y).attr("r",18).attr("fill", s.color).attr("opacity",0.2); svg.append("text").attr("x", s.x-30).attr("y", s.y+6).attr("text-anchor","middle").attr("font-size",18).attr("font-weight","bold").attr("fill", s.color).text(s.num);const lines = s.text.split("\n"); lines.forEach((line, i) => { svg.append("text").attr("x", s.x+10).attr("y", s.y-5+ i *16).attr("font-size",13).attr("fill","#2d3436").text(line); }); });// Rising air arrow svg.append("path").attr("d","M 150,380 Q 200,280 350,180 Q 450,100 550,70").attr("stroke","#e17055").attr("stroke-width",3).attr("fill","none").attr("stroke-dasharray","8,4");// Falling snowfor (let i =0; i <8; i++) { svg.append("text").attr("x",520+Math.random() *100).attr("y",200+Math.random() *180).attr("font-size",16).text("βοΈ"); }// Front line svg.append("line").attr("x1",375).attr("y1",420).attr("x2",375).attr("y2",200).attr("stroke","#6c5ce7").attr("stroke-width",3).attr("stroke-dasharray","5,3"); svg.append("text").attr("x",380).attr("y",195).attr("font-size",12).attr("fill","#6c5ce7").text("FRONT");return svg.node();}
27.2.1 π‘ Key Concept: Why Fronts Produce Precipitation
Warm, moist air (often from the Gulf of Mexico) contains lots of water vapor
At a front, this warm air is forced upward over cold air
As air rises, it cools (because atmospheric pressure decreases with altitude)
Cool air holds less water vapor than warm air
Excess moisture condenses into water droplets or freezes into ice crystals
When crystals grow heavy enough, they fall as snow (if temperatures remain below freezing all the way to the ground)
βοΈ A single mid-latitude cyclone can lift BILLIONS of tons of moist air, producing enough snow to bury an entire state! βοΈ
28 Elaborate: Blizzards & Climate Change
28.1 π‘οΈ Will Blizzards Get Worse in a Warming World?
This might seem like a contradiction β how can global warming lead to bigger snowstorms? Letβs investigate with data.
28.2 The Paradox: More Warming β More Snow?
It sounds counterintuitive, but a warmer atmosphere can actually fuel more intense winter storms in some regions. Hereβs why:
Code
viewof showMechanism = Inputs.radio( ["Warmer = More Moisture","Arctic Amplification","Both Together"], {label:"Explore the mechanism:",value:"Warmer = More Moisture"})
Code
{const width =750;const height =400;const svg = d3.create("svg").attr("width", width).attr("height", height).attr("viewBox",`0 0 ${width}${height}`); svg.append("rect").attr("width", width).attr("height", height).attr("fill","#f8f9fa").attr("rx",10);if (showMechanism ==="Warmer = More Moisture") { svg.append("text").attr("x",375).attr("y",35).attr("text-anchor","middle").attr("font-size",18).attr("font-weight","bold").text("π‘οΈ Warmer Air Holds More Water Vapor");// Clausius-Clapeyron: ~7% more moisture per 1Β°C warmingconst tempData = d3.range(-10,35,1).map(t => ({temp: t,moisture:3.5*Math.exp(0.07* (t +10))}));// Simple bar-style chartconst xScale = d3.scaleLinear().domain([-10,34]).range([80,700]);const yScale = d3.scaleLinear().domain([0,30]).range([350,60]);// Axes svg.append("line").attr("x1",80).attr("y1",350).attr("x2",700).attr("y2",350).attr("stroke","#2d3436"); svg.append("line").attr("x1",80).attr("y1",60).attr("x2",80).attr("y2",350).attr("stroke","#2d3436"); svg.append("text").attr("x",390).attr("y",390).attr("text-anchor","middle").attr("font-size",13).text("Temperature (Β°C)"); svg.append("text").attr("x",30).attr("y",200).attr("text-anchor","middle").attr("font-size",12).attr("transform","rotate(-90, 30, 200)").text("Max Moisture (g/kg)");// Curve svg.append("path").attr("d", d3.line().x(d =>xScale(d.temp)).y(d =>yScale(d.moisture)).curve(d3.curveBasis)(tempData)).attr("stroke","#e74c3c").attr("stroke-width",3).attr("fill","none");// Annotation svg.append("rect").attr("x",400).attr("y",80).attr("width",280).attr("height",90).attr("fill","#fff3e0").attr("rx",8); svg.append("text").attr("x",540).attr("y",105).attr("text-anchor","middle").attr("font-size",13).attr("font-weight","bold").text("Clausius-Clapeyron Relation:"); svg.append("text").attr("x",540).attr("y",125).attr("text-anchor","middle").attr("font-size",12).text("For every 1Β°C of warming, air can"); svg.append("text").attr("x",540).attr("y",145).attr("text-anchor","middle").attr("font-size",13).attr("font-weight","bold").attr("fill","#e74c3c").text("hold ~7% more water vapor"); svg.append("text").attr("x",540).attr("y",162).attr("text-anchor","middle").attr("font-size",12).text("β More fuel for storms!"); } elseif (showMechanism ==="Arctic Amplification") { svg.append("text").attr("x",375).attr("y",35).attr("text-anchor","middle").attr("font-size",18).attr("font-weight","bold").text("π§ Arctic Amplification & the Jet Stream");// Simplified diagram svg.append("rect").attr("x",50).attr("y",60).attr("width",650).attr("height",130).attr("fill","#dfe6e9").attr("rx",8); svg.append("text").attr("x",375).attr("y",90).attr("text-anchor","middle").attr("font-size",14).attr("font-weight","bold").text("BEFORE: Strong temperature gradient β Tight, fast jet stream"); svg.append("path").attr("d","M 80,150 Q 200,130 300,150 Q 400,170 500,150 Q 600,130 680,150").attr("stroke","#0984e3").attr("stroke-width",4).attr("fill","none"); svg.append("text").attr("x",100).attr("y",180).attr("font-size",12).attr("fill","#0984e3").text("Jet stream stays mostly straight β storms track predictably"); svg.append("rect").attr("x",50).attr("y",220).attr("width",650).attr("height",150).attr("fill","#ffeaa7").attr("rx",8); svg.append("text").attr("x",375).attr("y",250).attr("text-anchor","middle").attr("font-size",14).attr("font-weight","bold").text("AFTER: Reduced gradient β Wavy, slow jet stream"); svg.append("path").attr("d","M 80,310 Q 160,260 240,320 Q 320,380 400,300 Q 480,220 560,320 Q 640,370 680,310").attr("stroke","#e74c3c").attr("stroke-width",4).attr("fill","none"); svg.append("text").attr("x",100).attr("y",360).attr("font-size",12).attr("fill","#e74c3c").text("Jet stream develops deep waves β cold air plunges south, storms stall"); } else { svg.append("text").attr("x",375).attr("y",35).attr("text-anchor","middle").attr("font-size",18).attr("font-weight","bold").text("π¨οΈ Combined Effect: More Intense Blizzards");const boxes = [ {x:50,y:60,w:300,h:80,color:"#e74c3c",text:"π‘οΈ Warmer atmosphere\nholds ~7% more moisture per Β°C"}, {x:400,y:60,w:300,h:80,color:"#0984e3",text:"π§ Arctic warming weakens\njet stream β deeper troughs"}, {x:150,y:180,w:450,h:60,color:"#6c5ce7",text:"When deep cold outbreaks meet extra-moist air..."}, {x:100,y:280,w:550,h:90,color:"#2d3436",text:"βοΈ RESULT: Potentially MORE INTENSE blizzards\neven as average winters get milder\n(fewer but stronger storms)"} ]; boxes.forEach(b => { svg.append("rect").attr("x", b.x).attr("y", b.y).attr("width", b.w).attr("height", b.h).attr("fill", b.color).attr("opacity",0.15).attr("rx",10).attr("stroke", b.color).attr("stroke-width",2);const lines = b.text.split("\n"); lines.forEach((line, i) => { svg.append("text").attr("x", b.x+ b.w/2).attr("y", b.y+25+ i *20).attr("text-anchor","middle").attr("font-size",13).attr("font-weight", i ===0?"bold":"normal").text(line); }); });// Connecting arrows svg.append("line").attr("x1",200).attr("y1",140).attr("x2",300).attr("y2",180).attr("stroke","#636e72").attr("stroke-width",2); svg.append("line").attr("x1",550).attr("y1",140).attr("x2",450).attr("y2",180).attr("stroke","#636e72").attr("stroke-width",2); svg.append("line").attr("x1",375).attr("y1",240).attr("x2",375).attr("y2",280).attr("stroke","#636e72").attr("stroke-width",2); }return svg.node();}
28.3 Snowfall Trends: The Data
Code
snowData = [ {decade:"1960s",extremeEvents:3,avgSnowfall:58}, {decade:"1970s",extremeEvents:4,avgSnowfall:62}, {decade:"1980s",extremeEvents:3,avgSnowfall:55}, {decade:"1990s",extremeEvents:5,avgSnowfall:52}, {decade:"2000s",extremeEvents:6,avgSnowfall:48}, {decade:"2010s",extremeEvents:8,avgSnowfall:45}, {decade:"2020s*",extremeEvents:4,avgSnowfall:42}]Plot.plot({title:"Northeast US: Extreme Snowfall Events vs. Average Annual Snowfall",subtitle:"More extreme events even as average snowfall decreases",width:700,height:350,x: {label:"Decade",padding:0.3},y: {label:"Count / Inches"},color: {legend:true},marks: [ Plot.barY(snowData, {x:"decade",y:"extremeEvents",fill:"#3498db",title: d =>`${d.extremeEvents} extreme events`}), Plot.dot(snowData, {x:"decade",y:"avgSnowfall",fill:"#e74c3c",r:8}), Plot.line(snowData, {x:"decade",y:"avgSnowfall",stroke:"#e74c3c",strokeWidth:2}), Plot.text([{x:"2020s*",y:48}], {x:"x",y:"y",text: d =>"π΄ Avg Annual Snowfall (inches)",dx:-80,fill:"#e74c3c",fontSize:11}), Plot.text([{x:"2020s*",y:7}], {x:"x",y:"y",text: d =>"π΅ Extreme events per decade",dx:-80,fill:"#3498db",fontSize:11}) ]})
28.3.1 π Analyze the Paradox
Describe the trend in extreme snowfall events over time.
Describe the trend in average annual snowfall over time.
How can both trends exist simultaneously? Use what youβve learned about atmospheric moisture and the jet stream.
Connect this back to Winter Storm Jonas β what conditions made it possible?
29 Evaluate: Putting It All Together
29.1 β Assessment: Build Your Blizzard Model
You now have all the pieces to explain how blizzards form and how they may change with climate change. Letβs check your understanding!
29.1.1 π§ Check Your Understanding
Question 1: What is the fundamental cause of wind?
Code
viewof q1_blizzard = Inputs.radio( ["Temperature differences between the surface and upper atmosphere","Pressure differences caused by uneven heating of Earth's surface","The rotation of the Earth on its axis","Evaporation of water from the ocean"], {label:"Select the best answer:"})
Code
q1_blizzard ==="Pressure differences caused by uneven heating of Earth's surface"?html`<div style="background: #d4edda; padding: 12px; border-radius: 8px; border-left: 4px solid #28a745;">β <strong>Correct!</strong> Uneven heating creates temperature differences, which create pressure differences. Air flows from high to low pressure β that's wind!</div>`: q1_blizzard ?html`<div style="background: #f8d7da; padding: 12px; border-radius: 8px; border-left: 4px solid #dc3545;">β Not quite. Think about the causal chain: uneven heating β temperature differences β pressure differences β wind.</div>`:html``
Question 2: In a mid-latitude cyclone, blizzard conditions (heavy snow, high winds) are most likely found:
Code
viewof q2_blizzard = Inputs.radio( ["Ahead of the warm front (east/northeast of the low center)","Behind the cold front (north/west of the low center)","At the exact center of the low-pressure system","Far away from all fronts in the warm sector"], {label:"Select the best answer:"})
Code
q2_blizzard ==="Behind the cold front (north/west of the low center)"?html`<div style="background: #d4edda; padding: 12px; border-radius: 8px; border-left: 4px solid #28a745;">β <strong>Correct!</strong> The north/west side of the cyclone has cold air wrapping around the system, strong pressure gradients (= high winds), and moisture being lifted along the fronts β the recipe for blizzard conditions.</div>`: q2_blizzard ?html`<div style="background: #f8d7da; padding: 12px; border-radius: 8px; border-left: 4px solid #dc3545;">β Think about where cold air and moisture overlap. Blizzard conditions need both heavy precipitation AND cold temperatures.</div>`:html``
Question 3: How can climate change lead to more intense blizzards even as average temperatures rise?
Code
viewof q3_blizzard = Inputs.radio( ["Climate change has no effect on blizzards","Warmer air holds more moisture, providing more fuel; weakened jet stream allows cold outbreaks","Climate change only makes hurricanes worse, not blizzards","Blizzards are caused by the Sun, not greenhouse gases"], {label:"Select the best answer:"})
Code
q3_blizzard ==="Warmer air holds more moisture, providing more fuel; weakened jet stream allows cold outbreaks"?html`<div style="background: #d4edda; padding: 12px; border-radius: 8px; border-left: 4px solid #28a745;">β <strong>Excellent!</strong> The Clausius-Clapeyron relation means ~7% more moisture per Β°C of warming. When deep cold outbreaks (from a weakened jet stream) meet this extra moisture, the result can be more intense snowfall events.</div>`: q3_blizzard ?html`<div style="background: #f8d7da; padding: 12px; border-radius: 8px; border-left: 4px solid #dc3545;">β Think about two mechanisms: (1) more moisture in a warmer atmosphere, and (2) Arctic amplification weakening the jet stream.</div>`:html``
29.1.2 π Culminating Task: Blizzard Explanation Model
In your notebook, create a visual model (diagram + written explanation) that answers:
βHow did Winter Storm Jonas produce strong enough winds and enough snow to cause significant disruptions?β
Your model should include: 1. The air masses that interacted (with sources and properties) 2. The fronts that formed and how they caused precipitation 3. The mid-latitude cyclone structure and how it generated strong winds 4. An explanation of the energy source driving the storm 5. A claim about whether storms like Jonas could become more common, supported by evidence about atmospheric moisture and jet stream changes
Use the vocabulary: pressure gradient, air mass, front, mid-latitude cyclone, adiabatic cooling, condensation, Clausius-Clapeyron, Arctic amplification
30 Summary: Key Takeaways
Concept
Key Idea
Wind
Caused by pressure differences from uneven heating
Air Masses
Large bodies of air with uniform temp & humidity
Fronts
Boundaries between air masses; where weather happens
Mid-Latitude Cyclone
Low-pressure system with warm & cold fronts; produces blizzards
Precipitation
Warm moist air rises at front β cools β condenses β snow/rain
Climate Connection
Warmer air holds more moisture + weakened jet stream = potentially more intense blizzards
Next up: Weβll investigate why storms follow the paths they do β and whether those paths are changing. πΊοΈ